home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / ietf / urn / urn-archives / urn-ietf.archive.9703 / 000023_owner-urn-ietf _Wed Mar 12 09:20:04 1997.msg < prev    next >
Internet Message Format  |  1997-04-01  |  17KB

  1. Received: (from daemon@localhost)
  2.     by services.bunyip.com (8.8.5/8.8.5) id JAA25432
  3.     for urn-ietf-out; Wed, 12 Mar 1997 09:20:04 -0500 (EST)
  4. Received: from mocha.bunyip.com (mocha.Bunyip.Com [192.197.208.1])
  5.     by services.bunyip.com (8.8.5/8.8.5) with SMTP id JAA25377
  6.     for <urn-ietf@services.bunyip.com>; Wed, 12 Mar 1997 09:19:58 -0500 (EST)
  7. Received: from windrose.omaha.ne.us by mocha.bunyip.com with SMTP (5.65a/IDA-1.4.2b/CC-Guru-2b)
  8.         id AA21305  (mail destined for urn-ietf@services.bunyip.com); Wed, 12 Mar 97 09:19:51 -0500
  9. Received: by privateer.windrose.omaha.ne.us; Wed Mar 12 08:19 CST 1997
  10. Message-Id: <3326BB73.6BA1@ds.internic.net>
  11. Date: Wed, 12 Mar 1997 08:19:31 -0600
  12. From: Ryan Moats <jayhawk@ds.internic.net>
  13. Organization: InterNIC Directory and Database Services
  14. X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.5 sun4c)
  15. Mime-Version: 1.0
  16. To: internet-drafts@ietf.org
  17. Cc: urn-ietf@bunyip.com
  18. Subject: [URN] New URN syntax draft (-04)
  19. Content-Type: multipart/mixed; boundary="------------6EAA16BE35C4"
  20. Sender: owner-urn-ietf@Bunyip.Com
  21. Precedence: bulk
  22. Reply-To: Ryan Moats <jayhawk@ds.internic.net>
  23. Errors-To: owner-urn-ietf@Bunyip.Com
  24.  
  25. This is a multi-part message in MIME format.
  26.  
  27. --------------6EAA16BE35C4
  28. Content-Type: text/plain; charset=us-ascii
  29. Content-Transfer-Encoding: 7bit
  30.  
  31. Attached is draft-ietf-urn-syntax-04.txt.
  32.  
  33. This draft has editorial changes made during WG last call.
  34.  
  35. --------------6EAA16BE35C4
  36. Content-Type: text/plain; charset=us-ascii; name="urn.syntax.txt"
  37. Content-Transfer-Encoding: 7bit
  38. Content-Disposition: inline; filename="urn.syntax.txt"
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. Internet-Draft                                                Ryan Moats
  47. draft-ietf-urn-syntax-04.txt                                        AT&T
  48. Expires in six months                                         March 1997
  49.  
  50.  
  51.                                URN Syntax
  52.                  Filename: draft-ietf-urn-syntax-04.txt
  53.  
  54.  
  55. Status of This Memo
  56.  
  57.       This document is an Internet-Draft.  Internet-Drafts are working
  58.       documents of the Internet Engineering Task Force (IETF), its
  59.       areas, and its working groups.  Note that other groups may also
  60.       distribute working documents as Internet-Drafts.
  61.  
  62.       Internet-Drafts are draft documents valid for a maximum of six
  63.       months and may be updated, replaced, or obsoleted by other
  64.       documents at any time.  It is inappropriate to use Internet-
  65.       Drafts as reference material or to cite them other than as ``work
  66.       in progress.''
  67.  
  68.       To learn the current status of any Internet-Draft, please check
  69.       the ``1id-abstracts.txt'' listing contained in the Internet-
  70.       Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net
  71.       (Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
  72.       Coast), or ftp.isi.edu (US West Coast).
  73.  
  74.  
  75. Abstract
  76.  
  77.    Uniform Resource Names (URNs) are intended to serve as persistent,
  78.    location-independent, resource identifiers. This document sets
  79.    forward the canonical syntax for URNs.  A discussion of both existing
  80.    legacy and new namespaces and requirements for URN presentation and
  81.    transmission are presented.  Finally, there is a discussion of URN
  82.    equivalence and how to determine it.
  83.  
  84. 1. Introduction
  85.  
  86.    Uniform Resource Names (URNs) are intended to serve as persistent,
  87.    location-independent, resource identifiers and are designed to make
  88.    it easy to map other namespaces (which share the properties of URNs)
  89.    into URN-space. Therefore, the URN syntax provides a means to encode
  90.    character data in a form that can be sent in existing protocols,
  91.    transcribed on most keyboards, etc.
  92.  
  93.  
  94.  
  95.  
  96.  
  97. Expires 9/30/97                                                 [Page 1]
  98.  
  99.  
  100.  
  101.  
  102.  
  103. INTERNET DRAFT                 URN Syntax                     March 1997
  104.  
  105.  
  106. 2. Syntax
  107.  
  108.    All URNs have the following syntax (phrases enclosed in quotes are
  109.    REQUIRED):
  110.  
  111.                      <URN> ::= "urn:" <NID> ":" <NSS>
  112.  
  113.    where <NID> is the Namespace Identifier, and <NSS> is the Namespace
  114.    Specific String.  The leading "urn:" sequence is case-insensitive.
  115.    The Namespace ID determines the _syntactic_ interpretation of the
  116.    Namespace Specific String (as discussed in [1]).
  117.  
  118.    RFC 1630 [2] and RFC 1737 [3] each presents additional considerations
  119.    for URN encoding, which have implications as far as limiting syntax.
  120.    On the other hand, the requirement to support existing legacy naming
  121.    systems has the effect of broadening syntax.  Thus, we discuss the
  122.    acceptable syntax for both the Namespace Identifier and the Namespace
  123.    Specific String separately.
  124.  
  125. 2.1 Namespace Identifier Syntax
  126.  
  127.    The following is the syntax for the Namespace Identifier. To (a) be
  128.    consistent with all potential resolution schemes and (b) not put any
  129.    undue constraints on any potential resolution scheme, the syntax for
  130.    the Namespace Identifier is:
  131.  
  132.    <NID>         ::= <let-num> [ 1,31<let-num-hyp> ]
  133.  
  134.    <let-num-hyp> ::= <upper> | <lower> | <number> | "-"
  135.  
  136.    <let-num>     ::= <upper> | <lower> | <number>
  137.  
  138.    <upper>       ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
  139.                      "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
  140.                      "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
  141.                      "Y" | "Z"
  142.  
  143.    <lower>       ::= "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
  144.                      "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
  145.                      "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
  146.                      "y" | "z"
  147.  
  148.    <number>      ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
  149.                      "8" | "9"
  150.  
  151.  
  152.  
  153.    This is slightly more restrictive that what is stated in [4] (which
  154.  
  155.  
  156.  
  157. Expires 9/30/97                                                 [Page 2]
  158.  
  159.  
  160.  
  161.  
  162.  
  163. INTERNET DRAFT                 URN Syntax                     March 1997
  164.  
  165.  
  166.    allows the characters "." and "+").  Further, the Namespace
  167.    Identifier is case insensitive, so that "ISBN" and "isbn" refer to
  168.    the same namespace.
  169.  
  170.    To avoid confusion with the "urn:" identifier, the NID "urn" is
  171.    reserved and MUST NOT be used.
  172.  
  173. 2.2 Namespace Specific String Syntax
  174.  
  175.    As required by RFC 1737, there is a single canonical representation
  176.    of the NSS portion of an URN.   The format of this single canonical
  177.    form follows:
  178.  
  179.    <NSS>         ::= 1*<URN chars>
  180.  
  181.    <URN chars>   ::= <trans> | "%" <hex> <hex>
  182.  
  183.    <trans>       ::= <upper> | <lower> | <number> | <other> | <reserved>
  184.  
  185.    <hex>         ::= <number> | "A" | "B" | "C" | "D" | "E" | "F" |
  186.                      "a" | "b" | "c" | "d" | "e" | "f"
  187.  
  188.    <other>       ::= "(" | ")" | "+" | "," | "-" | "." |
  189.                      ":" | "=" | "@" | ";" | "$" |
  190.                      "_" | "!" | "*" | "'"
  191.  
  192.    Depending on the rules governing a namespace, valid identifiers in a
  193.    namespace might contain characters that are not members of the URN
  194.    character set above (<URN chars>).  Such strings MUST be translated
  195.    into canonical NSS format before using them as protocol elements or
  196.    otherwise passing them on to other applications. Translation is done
  197.    by encoding each character outside the URN character set as a
  198.    sequence of one to six octets using UTF-8 encoding [5], and the
  199.    encoding of each of those octets as "%" followed by two characters
  200.    from the <hex> character set above. The two characters give the
  201.    hexadecimal representation of that octet.
  202.  
  203. 2.3 Reserved characters
  204.  
  205.    The remaining character set left to be discussed above is the
  206.    reserved character set, which contains various characters reserved
  207.    from normal use.  The reserved character set follows, with a
  208.    discussion on the specifics of why each character is reserved.
  209.  
  210.    The reserved character set is:
  211.  
  212.    <reserved>    ::= '%" | "/" | "?" | "#"
  213.  
  214.  
  215.  
  216.  
  217. Expires 9/30/97                                                 [Page 3]
  218.  
  219.  
  220.  
  221.  
  222.  
  223. INTERNET DRAFT                 URN Syntax                     March 1997
  224.  
  225.  
  226. 2.3.1 The "%" character
  227.  
  228.    The "%" character is reserved in the URN syntax for introducing the
  229.    escape sequence for an octet.  Literal use of the "%" character in a
  230.    namespace must be encoded using "%25" in URNs for that namespace.
  231.    The presence of an "%" character in an URN MUST be followed by two
  232.    characters from the <hex> character set.
  233.  
  234.    Namespaces MAY designate one or more characters from the URN
  235.    character set as having special meaning for that namespace.  If the
  236.    namespace also uses that character in a literal sense as well, the
  237.    character used in a literal sense MUST be encoded with "%" followed
  238.    by the hexadecimal representation of that octet.  Further, a
  239.    character MUST NOT be "%"-encoded if the character is not a reserved
  240.    character.  Therefore, the process of registering a namespace
  241.    identifier shall include publication of a definition of which
  242.    characters have a special meaning to that namespace.
  243.  
  244. 2.3.2 The other reserved characters
  245.  
  246.    RFC 1630 [2] reserves the characters "/", "?", and "#" for particular
  247.    purposes. The URN-WG has not yet debated the applicability and
  248.    precise semantics of those purposes as applied to URNs. Therefore,
  249.    these characters are RESERVED for future developments.  Namespace
  250.    developers SHOULD NOT use these characters in unencoded form, but
  251.    rather use the appropriate %-encoding for each character.
  252.  
  253. 2.4 Excluded characters
  254.  
  255.    The following list is included only for the sake of completeness.
  256.    Any octets/characters on this list are explicitly NOT part of the URN
  257.    character set, and if used in an URN, MUST be %encoded:
  258.  
  259.    <excluded> ::= octets 1-32 (1-20 hex) | "\" | """ | "&" | "<"
  260.                   | ">" | "[" | "]" | "^" | "`" | "{" | "|" | "}" | "~"
  261.                   | octets 127-255 (7F-FF hex)
  262.  
  263.    In addition, octet 0 (0 hex) should NEVER be used, in either
  264.    unencoded or %-encoded form.
  265.  
  266.    An URN ends when an octet/character from the excluded character set
  267.    (<excluded>) is encountered.  The character from the excluded
  268.    character set is NOT part of the URN.
  269.  
  270. 3. Support of existing legacy naming systems and new naming systems
  271.  
  272.    Any namespace (existing or newly-devised) that is proposed as an
  273.    URN-namespace and fulfills the criteria of URN-namespaces MUST be
  274.  
  275.  
  276.  
  277. Expires 9/30/97                                                 [Page 4]
  278.  
  279.  
  280.  
  281.  
  282.  
  283. INTERNET DRAFT                 URN Syntax                     March 1997
  284.  
  285.  
  286.    expressed in this syntax.  If names in these namespaces contain
  287.    characters other than those defined for the URN character set, they
  288.    MUST be translated into canonical form as discussed in section 2.2.
  289.  
  290. 4. URN presentation and transport
  291.  
  292.    The URN syntax defines the canonical format for URNs and all URN
  293.    transport and interchanges MUST take place in this format. Further,
  294.    all URN-aware applications MUST offer the option of displaying URNs
  295.    in this canonical form to allow for direct transcription (for example
  296.    by cut and paste techniques).  Such applications MAY support display
  297.    of URNs in a more human-friendly form and may use a character set
  298.    that includes characters that aren't permitted in URN syntax as
  299.    defined in this RFC (that is, they may replace %-notation by
  300.    characters in some extended character set in display to humans).
  301.  
  302. 5. Lexical Equivalence in URNs
  303.  
  304.    For various purposes such as caching, it's often desirable to
  305.    determine if two URNs are the same without resolving them. The
  306.    general purpose means of doing so is by testing for "lexical
  307.    equivalence" as defined below.
  308.  
  309.    Two URNs are lexically equivalent if they are octet-by-octet equal
  310.    after the following preprocessing:
  311.  
  312.            1. normalize the case of the leading "urn:" token
  313.            2. normalize the case of the NID
  314.            3. normalizing the case of any %-escaping
  315.  
  316.    Note that %-escaping MUST NOT be removed.
  317.  
  318.    Some namespaces may define additional lexical equivalences, such as
  319.    case-insensitivity of the NSS (or parts thereof).  Additional lexical
  320.    equivalences MUST be documented as part of namespace registration,
  321.    MUST always have the effect of eliminating some of the false
  322.    negatives obtained by the procedure above, and MUST NEVER say that
  323.    two URNs are not equivalent if the procedure above says they are
  324.    equivalent.
  325.  
  326. 6. Examples of lexical equivalence
  327.  
  328.    The following URN comparisons highlight the lexical equivalence
  329.    definitions:
  330.  
  331.            1- URN:foo:a123,456
  332.            2- urn:foo:a123,456
  333.            3- urn:FOO:a123,456
  334.  
  335.  
  336.  
  337. Expires 9/30/97                                                 [Page 5]
  338.  
  339.  
  340.  
  341.  
  342.  
  343. INTERNET DRAFT                 URN Syntax                     March 1997
  344.  
  345.  
  346.            4- urn:foo:A123,456
  347.            5- urn:foo:a123%2C456
  348.            6- URN:FOO:a123%2c456
  349.    URNs 1, 2, and 3 are all lexically equivalent.  URN 4 is not
  350.    lexically equivalent any of the other URNs of the above set.  URNs 5
  351.    and 6 are only lexically equivalent to each other.
  352.  
  353. 7. Functional Equivalence in URNs
  354.  
  355.    Functional equivalence is determined by practice within a given
  356.    namespace and managed by resolvers for that namespeace. Thus, it is
  357.    beyond the scope of this document.  Namespace registration must
  358.    include guidance on how to determine functional equivalence for that
  359.    namespace, i.e. when two URNs are the identical within a namespace.
  360.  
  361. 8. Security considerations
  362.  
  363.    This document specifies the syntax for URNs.  While some namespaces
  364.    resolvers may assign special meaning to certain of the characters of
  365.    the Namespace Specific String, any security consideration resulting
  366.    from such assignment are outside the scope of this document.  It is
  367.    strongly recommended that the process of registering a namespace
  368.    identifier include any such considerations.
  369.  
  370. 9. Acknowledgments
  371.  
  372.    Thanks to various members of the URN working group for comments on
  373.    earlier drafts of this document.  This document is partially
  374.    supported by the National Science Foundation, Cooperative Agreement
  375.    NCR-9218179.
  376.  
  377. 10. References
  378.  
  379.    Request For Comments (RFC) and Internet Draft documents are available
  380.    from <URL:ftp://ftp.internic.net> and numerous mirror sites.
  381.  
  382.          [1]         K. R. Sollins, "Requirements and a Framework for
  383.                      URN Resolution Systems," Internet Draft (work in
  384.                      progress),  November 1996.
  385.  
  386.  
  387.          [2]         T. Berners-Lee, "Universal Resource Identifiers in
  388.                      WWW," RFC 1630, June 1994.
  389.  
  390.  
  391.          [3]         K. Sollins and L. Masinter,  "Functional Require-
  392.                      ments for Uniform Resource Names," RFC 1737.
  393.                      December 1994.
  394.  
  395.  
  396.  
  397. Expires 9/30/97                                                 [Page 6]
  398.  
  399.  
  400.  
  401.  
  402.  
  403. INTERNET DRAFT                 URN Syntax                     March 1997
  404.  
  405.  
  406.          [4]         T. Berners-Lee, R. Fielding, L. Masinter, "Uniform
  407.                      Resource Locators (URL)," Internet Draft (work in
  408.                      progress),  December 1996.
  409.  
  410.  
  411.          [5]         Appendix A.2 of The Unicode Consortium, "The
  412.                      Unicode Standard, Version 2.0", Addison-Wesley
  413.                      Developers Press, 1996.  ISBN 0-201-48345-9.
  414.  
  415. 11. Editor's address
  416.  
  417.    Ryan Moats
  418.    AT&T
  419.    15621 Drexel Circle
  420.    Omaha, NE 68135-2358
  421.    USA
  422.  
  423.    Phone:  +1 402 894-9456
  424.    EMail:  jayhawk@ds.internic.net
  425.  
  426.  
  427.  
  428.  
  429.  
  430. Appendix A. Handling of URNs by URL resolvers/browsers.
  431.  
  432.    The URN syntax has been defined so that URNs can be used in places
  433.    where URLs are expected.  A resolver that conforms to the current URL
  434.    syntax specification [3] will extract a scheme value of "urn:"
  435.    rather than a scheme value of "urn:<nid>".
  436.  
  437.    An URN MUST be considered an opaque URL by URL resolvers and passed
  438.    (with the "urn:" tag) to an URN resolver for resolution.  The URN
  439.    resolver can either be an external resolver that the URL resolver
  440.    knows of, or it can be functionality built-in to the URL resolver.
  441.  
  442.    To avoid confusion of users, an URL browser SHOULD display the com-
  443.    plete URN (including the "urn:" tag) to ensure that there is no con-
  444.    fusion between URN namespace identifiers and URL scheme identifiers.
  445.  
  446.  
  447.               This Internet Draft expires September 30, 1997.
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457. Expires 9/30/97                                                 [Page 7]
  458.  
  459.  
  460.  
  461. --------------6EAA16BE35C4--
  462.